﻿using S.ReportForms.Domain.Dto;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace S.ReportForms.Infrastructure.Interface
{
    /// <summary>
    /// 种母配怀报表
    /// </summary>
    public interface IBreadMatchingRepository
    {
        #region 预估分娩率
        /// <summary>
        /// 预估分娩率
        /// </summary>
        /// <returns></returns>
        Task<List<NumberOfMatings>> GetBreadMatching(List<DateTime> dateTimeList);

        /// <summary>
        /// /获取分娩数
        /// </summary>
        /// <param name="dateTimeList"></param>
        /// <returns></returns>
        Task<List<int>> GetDeliveryDate(List<DateTime> dateTimeList);
        /// <summary>
        /// 获取配种数
        /// </summary>
        /// <param name="dateTimeList"></param>
        /// <returns></returns>
        Task<List<int>> GetBreedingDate(List<DateTime> dateTimeList);
        #endregion



        #region 配种分娩率
        /// <summary>
        /// 种母分娩率
        /// </summary>
        /// <param name="selectYear">查询的年</param>
        /// <param name="startDate">开始时间</param>
        /// <param name="endDate">结束时间</param>
        /// <returns></returns>
        Task<List<BreedingDeliveryRateDto>> GetBreedingDeliveryRate(int selectYear, DateTime startDate, DateTime endDate);

        #endregion


        #region 种母状态分布


        /// <summary>
        /// 繁殖状态
        /// </summary>
        /// <param name="varietyId">品种ID</param>
        /// <returns></returns>
        Task<List<ReproductiveStateCount>> GetReproductiveState(int varietyId);
        /// <summary>
        /// 妊娠前、中、后期、临产，超预产期
        /// </summary>
        /// <returns></returns>
        Task<List<PregnancyCount>> GetPregnancyCountDto();
        /// <summary>
        /// 妊检未检
        /// </summary>
        /// <returns></returns>
        Task<List<PregnancyNotCount>> GetPregnancyNotCountDto();

        #endregion

    }
}
